#ifndef __SDLPARTICLE_H_
#define __SDLPARTICLE_H_

#include "SDLBase.h"

class SDLParticle :public SDLBase
{
    #define PARTICLE_COUNT 4                /**< 图片中包含几个动画帧 */
    #define PARTICLE_WIDTH 5                /**< 动画帧的宽度 */
    #define PARTICLE_HEIGHT 5               /**< 动画帧的高度 */
public:
    SDLParticle();
    ~SDLParticle();

    /**
     * @brief 接收键盘输入并改变圆点的速度
     * 
     * @param event ： 事件
     */
    void handleEvent(SDL_Event event);
    /**
     * @brief 将动画的相应帧画在画布上
     * 
     * @param renderer ： 2D渲染上下文
     */
    void show(SDL_Renderer *renderer);

    /**
     * @brief 设置位置
     * 
     * @param x ： x
     * @param y :  y
     */
    void setPos(int x, int y);

    /**
     * @brief 设置大小
     * 
     * @param w ： w
     * @param h :  h
     */
    void setSize(int w,  int h);

    /**
     * @brief 获取位置x
     * 
     * @return int : 返回位置x
     */
    int getX();


    /**
     * @brief 获取位置y
     * 
     * @return int : 返回位置y
     */
    int getY();

    
    /**
     * @brief 获取对象当前的位置
     * 
     * @param x ： 返回X位置
     * @param y ： 返回Y位置
     */
    void getPos(int *x, int *y);

    /**
     * @brief 设置每秒中闪烁周期数
     * 
     * @param animPre ： 每秒闪烁的周期数
     */
    void SetAnimPreSecond(int animPre);

private:
    int x, y;                       /**< 圆点的X，Y坐标 */
    int xVel, yVel;                 /**< 圆点分别在X，Y方向上的速度分量 */
    SDL_Rect clips[PARTICLE_COUNT];    /**< 动画中每一帧的位置 */
    float nowFrameIndex;            /**< 当前使用动画中的那一帧 */
    float animPre;                  /**< 记录每秒中循环几次动画 */
    int disH;                       /**< 显示时高度 */
    int disW;                       /**< 显示时宽度 */

    /**
     * @brief 设置每一帧在图片中的位置
     * 
     */
    void setClips();

};


#endif //__SDLPARTICLE_H_